package com.tqfframe.website.web.common;

import java.math.BigDecimal;

/**
 * Created by Tang-QiFeng on 2021/1/2
 */
public class StockCalculate {


    /**
     * 　  RSV=（当日的收盘价－九日内的最低价）÷（九日内的最高价－九日内的最低价）×100
     * 　　K值=2/3×前一日K值＋1/3×当日RSV
     * @param open
     * @param low
     * @param close
     * @param high
     * @param old_k
     * @return
     */
    public static Double getKvalue(Double open, Double low, Double close, Double high, Double old_k){
        BigDecimal a=new BigDecimal(1.00);
        BigDecimal b=new BigDecimal(2.00);
        BigDecimal c=new BigDecimal(3.00);
        BigDecimal d=new BigDecimal(100.00);
        BigDecimal openBigDecimal=new BigDecimal(open);
        BigDecimal lowBigDecimal=new BigDecimal(low);
        BigDecimal closeBigDecimal=new BigDecimal(close);
        BigDecimal highBigDecimal=new BigDecimal(high);
        BigDecimal oldKBigDecimal=new BigDecimal(old_k);
        BigDecimal aa=(closeBigDecimal.subtract(lowBigDecimal));
        BigDecimal bb=(highBigDecimal.subtract(lowBigDecimal));
        BigDecimal  rsv=aa.divide(bb, 4, BigDecimal.ROUND_UP).multiply(d);
        BigDecimal k_value=(b.divide(c,4, BigDecimal.ROUND_UP).multiply(oldKBigDecimal)).add(a.divide(c,4, BigDecimal.ROUND_UP).multiply(rsv));
        k_value.setScale(2, BigDecimal.ROUND_UP);  //保留2位小数
        return k_value.doubleValue();
    }

    public static void main(String[] args) {
        //29.388191
        System.out.println(getKvalue(17.61,17.61,18.01,18.22,11.30));
    }


}
